package com.cskaoyan.javase.io._1byte._2filein;

import org.junit.Test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * 使用文件字节输入流循环读取一个文本文件数据,将这个文本文件全部读完
 *
 * @since 16:29
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class LoopReadDemo {
    // 单字节进行循环读取,使用read()方法
    @Test
    public void testLoopReadSingle() throws IOException {
        // 1.创建文件字节输入流对象
        FileInputStream in = new FileInputStream("a.txt");
        // 2.循环读取文件中的数据
        // read()方法读取的返回值就是字节值
        int readData;
        while ((readData = in.read()) != -1) {
            System.out.println(((char) readData));
        }
        // 3.关闭流close
        in.close();
    }


    @Test
    public void testLoopReadMulti() throws IOException {
        // 1.创建文件字节输入流对象
        FileInputStream in = new FileInputStream("a.txt");
        // 2.循环读取文件中的数据
        // 普遍选择用byte数组读取字节数据时,一次性读取1024个字节,1kb
        byte[] buf = new byte[5];
        // 一次性读取的字节的数量
        int readCount;
        while ((readCount = in.read(buf)) != -1) {
            System.out.println(new String(buf, 0, readCount));
        }
        // 3.关闭流close
        in.close();
    }
}
